EclipseScalaやる場合の注意点


概要

自分だけではなく、弊社の他の人も踏んだバグがちらちら重複してきた感があるので、

まとめてみた。


対象環境は、Scala IDE 2.0.2 + Eclipse 3.7.2 + Mac OS 10.8.2

ちなみに、どれも「完全再現できない」感じ。

時々発生する。


Eclipse+Java+Scala複合の問題


Javaで定義した定数の内容をScalaからは認識できないことがある

Java側のクラス情報の更新が、Scala側まで伝わらない模様。


たとえばJava側で

static final String a = "a";


とか書いてて、scala側から使用していると、

println(a)// "a"


Javaの方で定数の値を変更しても、

static final String a = "b";

Scala側で

println(a)// "a"

の、まま、という。


クリーニングは無意味。

Eclipseの再起動で直る。

気づきにくいのが一番辛い。



Eclipse+Scala単独の問題


object/classファイルを作成後、class/objectに切り替えると、ビルドエラーが出ることがある

Scalaプラグインを入れたEclipseのウィザードから、

object/classを作ったあと、内容編集でobject → class とかに編集すると、

ビルド時/実行時にエラーになる。

クリーニング効かない。

Eclipseの再起動で直る。


Scalaのコンストラクタの引数をあとから足すと、new演算子にエラー表記が出っぱなしになることがある

・Scalaのコンストラクト時の引数を、適当なタイミングで足すと、new演算子がエラー出す事が有る。



・newするコードが既にある

val a = new A("name")


状態で、Aのコンストラクタ引数を加えると、


class A (name : String) = {}

class A (name : String, value : String) = {}

val a = new A("name", "val")

newが、エラーを吐くようになる。

クリーニングも再起動も効かない。


エラーを起している行そのものを一度消して、書き直す(カット&ペースト可)

とかやると、エラーが消える。


エラーのデータが残ったままになってるっぽい。



メモまでに。


ちなみにScalaIDEの中に入ってるsbtとかは、プラグインのversion見ようとしたり、エラーが発生したりするとチラチラ見れる。

スクリーンショット 2012-10-15 23.11.35.png